package com.allen.study.infrastructure.persistence.assembler;

import com.allen.study.application.api.response.EmployeeLoginQueryResponse;
import com.allen.study.domain.entity.EmployeeLogin;
import com.allen.study.infrastructure.persistence.assembler.mapper.IEmployeeLoginPOStructMapper;
import com.allen.study.infrastructure.persistence.po.EmployeeLoginPO;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 用户登录信息表类型转换
 *
 * @author AllenSun
 * @since 2025-03-15 13:57
 */
@Component
public class EmployeeLoginPOAssembler {

    /**
     * 用户登录信息表持久化对象装配
     *
     * @param employeeLogin 用户登录信息表实体
     * @return 用户登录信息表持久化对象
     */
    public EmployeeLoginPO assembler(EmployeeLogin employeeLogin) {
        return IEmployeeLoginPOStructMapper.INSTANCE.fromEntity(employeeLogin);
    }

    /**
     * 用户登录信息表持久化对象装配
     *
     * @param employeeLoginList 用户登录信息表实体
     * @return 用户登录信息表持久化对象
     */
    public List<EmployeeLoginPO> assembler(List<EmployeeLogin> employeeLoginList) {
        return IEmployeeLoginPOStructMapper.INSTANCE.fromEntity(employeeLoginList);
    }

    /**
     * 用户登录信息表持久化对象 转 用户登录信息表实体
     *
     * @param employeeLoginPO 用户登录信息表持久化对象
     * @return 用户登录信息表实体
     */
    public EmployeeLogin toEntity(EmployeeLoginPO employeeLoginPO) {
        return IEmployeeLoginPOStructMapper.INSTANCE.toEntity(employeeLoginPO);
    }

    /**
     * 用户登录信息表持久化对象列表  转 用户登录信息表实体列表
     *
     * @param employeeLoginPOList 用户登录信息表持久化对象
     * @return 用户登录信息表实体
     */
    public List<EmployeeLogin> toEntity(List<EmployeeLoginPO> employeeLoginPOList) {
        return IEmployeeLoginPOStructMapper.INSTANCE.toEntity(employeeLoginPOList);
    }

    /**
     * 用户登录信息表持久化对象 转 用户登录信息表查询响应数据传输对象
     *
     * @param employeeLoginPO 用户登录信息表持久化对象
     * @return 用户登录信息表查询响应数据传输对象
     */
    public EmployeeLoginQueryResponse toQueryResponse(EmployeeLoginPO employeeLoginPO) {
        return IEmployeeLoginPOStructMapper.INSTANCE.toQueryResponse(employeeLoginPO);
    }

    /**
     * 用户登录信息表持久化对象列表 转 用户登录信息表查询响应数据传输对象列表
     *
     * @param employeeLoginPOList 用户登录信息表持久化对象列表
     * @return 用户登录信息表查询响应数据传输对象列表
     */
    public List<EmployeeLoginQueryResponse> toQueryResponse(List<EmployeeLoginPO> employeeLoginPOList) {
        return IEmployeeLoginPOStructMapper.INSTANCE.toQueryResponse(employeeLoginPOList);
    }
}
